梦入琼楼寒有月,行过石树冻无烟

CSS linear or clip-path of chamefer

斜切角,Angle of chamefer,通过CSS来实现的方法主要有linear-gradient、border-imgage、clip-path来进行绘制斜切角或三角形。

linear-gradient


通过使用使用线性渐变,分别通过45deg/-45deg角度来实现左下角和右下角的斜切角,当然这里使用的斜切角大小为15px,可根据需求来进行调整。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style>
.angle-45a {
background: linear-gradient(45deg, transparent 15px, blue 0);
}
.angle-45b {
background: linear-gradient(-45deg, transparent 15px, blue 0);
}
</style>
<div class="xu-col-9 or">
<div class="con-md-2">
<div class="angle-45a"></div>
<div class="angle-45b"></div>
</div>
</div>


除此之外,我们也可通过使用多个线性渐变来达到多个角度切割的效果,线性渐变可以配合:

ID DA FA
top 顶部 top and left or top and right
bottom 底部 bottom and left of bottom and rifht
left
right
由于默认的情况下两个线性渐变被应用在同一个元素,因此需要通过使用将此分割成50%让其各占一半。

为避免重复,需要通过使用background-repeat来避免背景的重复:

1
2
3
4
5
6
7
8
9
10
11
12
.angle-45a {
background: linear-gradient(-45deg, transparent 15px, #6464ff 0) right,
linear-gradient(45deg, transparent 15px, #6464ff 0) left;
background-size: 50% 100%;
background-repeat: no-repeat;
}
.angle-45b {
background: linear-gradient(45deg, transparent 15px, #6464ff 0) right,
linear-gradient(-45deg, transparent 15px, #6464ff 0) left;
background-size: 50% 100%;
background-repeat: no-repeat;
}


不仅仅线性可以达到斜切角的效果,径向渐变也可以来完成其曲线切角的效果:

1
2
3
4
5
6
7
8
9
.angle-45a {
background: radial-gradient(circle at top left, transparent 50px, #6464ff 0);
background-size: 50% 100%;
background-repeat: no-repeat;
}
.angle-45b {
background: radial-gradient(circle at top right, transparent 50px, #6464ff 0);
background-repeat: no-repeat;
}

一秒爱上 clip-path


对于 border-image,svg 玩家可能会狂喜,因为通过使用border-image中通过 svg内的多边形来实现,是不会太难的,但是对于 CSS 玩家可能会感觉非常的无语,于是clip-path可能会让你一秒爱上。

1
2
border: 20px solid transparent;
border-image: 1 url('data:image/svg+xml,\<svg xmlns="http://www.w3.org/2000/svg" width="3" height="3" fill="AliceBlue">\<polygon points="2 0, 80 0, 100 100, 0 100"/>\</svg>');

clip-path


裁剪路径,(clip-path),使用SVG或形状定义一个HTML元素的可见区域方法, 在MDN中,介绍如下:

clip-path属性可以防止部分元素通过定义的剪切区域来显示,仅通过显示的特殊区域。剪切区域是被URL定义的路径代替行内或者外部svg,或者定义路线的方法例如circle().。clip-path属性代替了现在已经弃用的剪切 clip属性。

这时候可能CSS玩家会很无语,于是国外有一个非常不错的项目,来直接生成clip-path路径(PS:SVG很多路径都可以被生成)

https://bennettfeely.com/clippy/

1
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
⬅️ Go back